iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 10
0
自我挑戰組

IOS app開發介紹系列 第 10

IOS app開發介紹 - IOS一些重要的概念與機制(6. structures and classes)

  • 分享至 

  • xImage
  •  

structures and classes

程式要進行運算,要有運算元(operand)和運算子(operator),而當我們需要把計算的結果存起來,在其他地方去存取使用時,我們就需要變數.當我們現在處理的東西需要同時處理多個變數,例如: 把長方形長和寬變成原本的2倍。我們當然可以把長和寬用兩個變數存起來,但如果我們可以用資料結構把長方形的長和寬包在一起,並定義一個function讓我們去放大長和寬。這樣我們就可以更清楚的了解長方形的長和寬的關係。

ex:

Struct Rectangle {
     var length = 3
     var width = 1
     
     init(l: Int, w: Int) {
         length = l
         width = w
     }
     func enlarge(ratio: Int) {
         length = 2 * length
         width = 2 * width
     }
  }

Swift提供了**兩種資料結構(structure & class)**讓我們儲存資料,資料結構的名稱又稱為型別(type)

以下比較structure和class的相同和相異處:

相同處:

  1. 定義屬性(properties)來儲存資料(values)
  2. 定義方法來提供功能(ex: 之間提到的 func enlarge(int ratio) )
  3. 用subscripts(.)來存取資料 (ex: rectangle.length )
  4. 定義初始化函式(initializers)來設定每個屬性的初始值
  5. 可以擴充功能(ex: 利用Extension)
  6. 遵守protocol來提供一些功能 (類似Java interface)

相同處:(以下皆為class的特性)

  1. class可以繼承其他class來獲得那個class的屬性與功能(note: Swift只能單一繼承,無多重繼承)
  2. Type casting(轉型)可以讓你在執行期切換某個object的type
  3. 解構子(Deinitializers)可以讓你釋放object的資源
  4. 一個object(class instance)可以有多個參考(reference)

Values types v.s Reference Types:
差別:
values types在傳遞參數時,會複製一份傳遞過去,所以在function中去修改參數,並不會影響原本的變數
但如果是reference types,則在function中去修改參數,會影響原本的變數

Values types:
ex: structure,enumeration,Swift的基本型別(Int,Float,Double,String,..)
Reference Types:
ex: class


上一篇
IOS app開發介紹 - IOS一些重要的概念與機制(5. 背景執行)
下一篇
IOS app開發介紹 - IOS一些重要的概念與機制(7. IOS 測試/上架需要的前置準備)
系列文
IOS app開發介紹22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言